########################################################################
## Top Level
########################################################################

.DELETE_ON_ERROR:
.ONESHELL:
.SILENT:

########################################################################
#default settings
########################################################################
CC      :=  gcc
CFLAGS  := -Wall -pipe -ansi 

LDFLAGS := -lm

########################################################################
# macro to convert source files into object files
########################################################################
to_object = $(foreach a,$(1),.$(patsubst %.c,%.o,objs/$(a)))

########################################################################
# some info
########################################################################
HERE  = $(notdir $(shell pwd))
CLEAN = @echo "== cleaning in $(HERE)" && rm -f garbage *~ .objs/*.o .objs/*.d

########################################################################
#default compilation rule
########################################################################

.objs/%.o:%.c
	@echo "--> compiling $<..." && $(CC) -c $< -o $@ $(CFLAGS)
	@$(CC) -MM $< $(CFLAGS) -MT $@ > .objs/$*.d

LINK = @echo "==> (**   $@   **)" && $(CC) -o $@ $^ $(LDFLAGS)	

########################################################################
#
########################################################################
ifeq (gcc,$(findstring gcc,$(CC)))
LDFLAGS := $(LDFLAGS) -static-libgcc
endif

########################################################################
#customize
########################################################################
CFLAGS   := $(CFLAGS) $(MY_CFLAGS)
LDFLAGS  := $(LDFLAGS) $(MY_LDFLAGS)

